0.1.0b0 - Beta Readiness - #28
Merged
Merged
Conversation
Export the documented latent-factor PipelineFitResult at the package root and add a public API stability reference for the beta series. The new regression test pins the reader-facing frame names and rejects stale SurfaceFrame terminology. Closes #13.
Promote the package metadata to the first beta version and update the PyPI development classifier. The tag and publication remain gated by the remaining beta-readiness checks. Closes #14.
Add the MkDocs strict build to the main CI workflow and make the package build depend on it. This promotes documentation from a deploy-only workflow to a release-quality gate. Closes #15.
Clarify each model family's input contract, native output, assumptions, and checkpoint semantics for reader-facing beta documentation. Remove internal-history wording from the SAE guide. Closes #16.
Add executable public-API examples for latent-factor forecasting, stochastic discount factor mapping, direct SAE prediction, and portfolio allocation. The examples are included in source distributions and run under pytest to catch API drift. Closes #17.
Exercise the optional ml4t-specs FeedSpec path and keep close_col aligned with price_col when no explicit price column is supplied. Clarify that diagnostics and execution remain owned by sibling libraries. Closes #18.
Add a regression test for the CAE latent-factor pipeline so checkpointed structural extraction is mapped through a factor-premium forecaster before asset return forecasts are produced. Closes #19.
Add a tracked-file hygiene test that rejects archives, generated artifacts, and internal agent state in the public repository. The Dependabot PR labels referenced by configuration now exist on GitHub. Closes #20.
Record the local and GitHub checks required before beta tagging, including strict docs, package build, optional integration smoke tests, and Python version coverage. Closes #21.
stefan-jansen
marked this pull request as ready for review
July 21, 2026 14:16
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Milestone:
0.1.0b0 - Beta ReadinessBook validation included on this branch:
Local validation:
uv run ruff check src/ tests/ examplesuv run ruff format --check src/ tests/ examplesuv run ty checkuv run pytest tests/ -quv run mkdocs build --strictuv builduv run --extra integration pytest tests/test_integration_backtest.py tests/test_integration_data.py tests/test_integration_surfaces.py -qPYTHONPATH=/home/stefan/ml4t/libraries/ml4t-models/src:/home/stefan/ml4t/code uv run jupyter nbconvert --execute 14_latent_factors/04_ipca.ipynb --to notebook --output /tmp/ml4t_models_beta_04_ipca.ipynb --ExecutePreprocessor.timeout=600PYTHONPATH=/home/stefan/ml4t/libraries/ml4t-models/src:/home/stefan/ml4t/code uv run jupyter nbconvert --execute 14_latent_factors/05_rp_pca.ipynb --to notebook --output /tmp/ml4t_models_beta_05_rp_pca.ipynb --ExecutePreprocessor.timeout=600PYTHONPATH=/home/stefan/ml4t/libraries/ml4t-models/src:/home/stefan/ml4t/code uv run jupyter nbconvert --execute 14_latent_factors/06_conditional_autoencoder.ipynb --to notebook --output /tmp/ml4t_models_beta_06_conditional_autoencoder.ipynb --ExecutePreprocessor.timeout=900PYTHONPATH=/home/stefan/ml4t/libraries/ml4t-models/src:/home/stefan/ml4t/code uv run jupyter nbconvert --execute 14_latent_factors/07_stochastic_discount_factor.ipynb --to notebook --output /tmp/ml4t_models_beta_07_stochastic_discount_factor.ipynb --ExecutePreprocessor.timeout=1200PYTHONPATH=/home/stefan/ml4t/libraries/ml4t-models/src:/home/stefan/ml4t/code uv run papermill 14_latent_factors/08_supervised_autoencoder.ipynb /tmp/ml4t_models_beta_08_supervised_autoencoder_smoke.ipynb -p N_STOCKS 50 -p N_EPOCHS 1 -p N_SPLITS 1 -p START_DATE 2016-01-01 -p END_DATE 2018-12-31PYTHONPATH=/home/stefan/ml4t/libraries/ml4t-models/src:/home/stefan/ml4t/code uv run jupyter nbconvert --execute 14_latent_factors/09_case_study_insights.ipynb --to notebook --output /tmp/ml4t_models_beta_09_case_study_insights.ipynb --ExecutePreprocessor.timeout=900case_studies.utils.latent_factors.library_bridge#22 remains open until this PR merges and the
v0.1.0b0tag publishes successfully.